const path = require("path");
const fs = require("fs");

export default (options) => {
  // 做的最主要的事情就是拦截http请求
  // 当我们使用fetch或者axios去请求的
  // axios baseUrl // 请求地址
  // 当打给本地开发服务器的时候 viteserver服务器接管

  return {
    configureServer(server) {
      // 服务器的相关配置
      // req，请求对象 ---> 用户发过来的请求，请求头请求体 url cookie
      // res：响应对象 - res.header
      // next：是否交给下一个中间件，调用next方法会将处理结果交给下一个中间件

      const mockStat = fs.statSync("mock");
      const isDirectory = mockStat.isDirectory();
      let mockResult = [];
      if (isDirectory) {
        mockResult = require(path.resolve(process.cwd(), "mock/index.js"));
        console.log("result", mockResult);
      }
      server.middlewares.use((req, res, next) => {
        console.log("req", req.url);
        const matchItem = mockResult.find(
          (mockDescriptor) => mockDescriptor.url === req.url
        );
        console.log(matchItem);
        if (matchItem) {
          console.log("进来了");
          const responseData = matchItem.response(req);
          console.log(responseData);
          res.setHeader("content-type", "application/json");
          res.end(JSON.stringify(responseData));
        } else {
          next();
        }
      });
    },
  };
};
